package com.adopt.service;


import com.adopt.pojo.Result;
import com.adopt.pojo.Users;
import com.adopt.vo.LoginVo;
import com.adopt.vo.RegisterVo;
import org.apache.ibatis.annotations.Param;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * ClassName:UserService
 * Package:com.adopt.service
 * Description:
 *
 * @Date:2023/9/9 22:02
 * Author:shifan
 */
public interface UserService {
    /**
     * 登录
     * @return
     */
    Result login(LoginVo loginVo, HttpServletRequest request, HttpServletResponse response);

    /**
     * 根据cookie获取redis用户
     * @param userTicket
     * @return
     */
    Result getUserByCookieFromRedis(String userTicket,HttpServletRequest request,HttpServletResponse response);


    /**
     * 新增的用户
     * @param user 新增的用户
     * @return int
     * */
    int addUser(Users user);

    /**
     * 删除用户
     * @param id 用户的id
     * @return int
     * */
    int deleteUser(Integer id);

    /**
     * 更新用户的信息
     * @param user 更新的用户信息
     * @return int
     * */
    int updateUser(Users user);

    /**
     * 查询所有的用户
     * @return list
     * */
    List<Users> getUsers();

    /**
     * 根据用户id查询信息
     * @param id 用户id
     * @return users
     * */
    Users findById(Integer id);

    /**
     * 根据用户名查询用户信息
     * @param userName 用户名
     * @return users
     * */
    List<Users> findByName(String userName);

    /**
     * 用户登录
     * @param users 用户的账号和密码
     * @return Users
     * */
    Users loginUser(Users users);
    /**
     * 批量删除
     * @param ids id的集合
     * */
    void deleteBatch(@Param("ids")List<Integer>ids);

    Result register(RegisterVo registerVo);
}
